package org.patterns.behavior.interpreter;

/**
 * AndNode类代表逻辑与（And）操作的节点类
 * And解释：非终结符表达式
 * 该类的主要作用是将两个子节点表达式进行逻辑与操作
 */
public class AndNode extends AbstractNode {
    private AbstractNode left; //And的左表达式
    private AbstractNode right; //And的右表达式

    /**
     * 构造方法用于初始化AndNode对象
     *
     * @param left  逻辑与操作的左表达式节点
     * @param right 逻辑与操作的右表达式节点
     */
    public AndNode(AbstractNode left, AbstractNode right) {
        this.left = left;
        this.right = right;
    }

    /**
     * And表达式解释操作
     * 将左右子节点的解释结果拼接起来，并在中间加上“再”字
     * 以表示两个操作的连续性
     *
     * @return 拼接后的字符串表示当前节点的解释结果
     */
    public String interpret() {
        return left.interpret() + "，再" + right.interpret();
    }
}

